QMainWindow
: 的窗口類別,提供了標準的應用程式窗口框架,包含菜單欄、工具欄、狀態欄等。這個類別讓我們可以輕鬆地管理整個應用程式的界面結構。
QMenuBar
: 用來建立應用程式的功能菜單,我們可以在菜單中添加操作項,像是打開文件、保存文件等功能,並連接到對應的事件處理函數。
QAction
: 菜單中的一個操作項,使用者點擊後會觸發對應的事件。在這裡,我們使用 QAction 來為菜單欄添加具體的功能,比如打開文件、保存文件和退出應用程式。
QFileDialog
: 標準的文件對話框,允許使用者打開或保存文件。在這個專案中,會用來實現記事本的文件開啟和保存功能。
QPlainTextEdit
: 多行文本編輯器,可以用來顯示和編輯大段的純文本,適合用來構建簡單的文字編輯器功能。透過它,實現記事本的主要功能。
# 設置窗口尺寸和名稱
self.setWindowTitle("Notepad")
Self.setGeometry(100,100,800,600)
# 創建文字輸入框
self.text_edit = QPlainTextEdit(self)
#將文字輸入框設置在窗口中心,大小會隨窗口自動調整
self.setCentralWidget(self.text_edit)
self.text_edit.setStyleSheet("""
QTextEdit {
border: 2px solid #4CAF50;
border-radius: 5px;
padding: 5px;
}
""")
QMenuBar
建立一個菜單欄,然後為文件菜單添加三個操作項打開文件、保存文件和退出。操作項透過 QAction
定義,並與槽函數連接。#創建菜單和功能
menu_bar = self.menuBar()
file_menu = menu_bar.addMenu("文件")
open_action = QAction("打開文件",self)
open_action.triggered.connect(self.open_file)
file_menu.addAction(open_action)
save_action = QAction("保存文件",self)
save_action.triggered.connect(self.save_file)
file_menu.addAction(save_action)
exit_action = QAction("退出",self)
exit_action.triggered.connect(self.close)
file_menu.addAction(exit_action)
QFileDialog
實現打開文件、保存文件和退出。可以使用 toPlainText()
取得文字輸入框裡的內容。# 打開文件,並限定檔案類型.txt
def open_file(self):
file_path , _ = QFileDialog.getOpenFileName(self, "打開文件" ,".","文本文件(*.txt)")
#確定是否有選定文件路徑
if file_path:
with open(file_path,'r',encoding='utf-8') as file:
self.text_edit.setPlainText(file.read())
# 保存文件,並限定檔案類型.txt
def save_file(self):
file_path, _ = QFileDialog.getSaveFileName(self, "保存文件", "", "文本文件 (*.txt)")
#確定是否有選定文件路徑
if file_path:
with open(file_path, 'w', encoding='utf-8') as file:
file.write(self.text_edit.toPlainText())